package qldc.pm.tienan.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import qldc.pm.csdl.cd90.model.dto.CongDanDTO;
import qldc.pm.csdl.cd90.service.CongDanDTOLocalServiceUtil;
import qldc.pm.tienan.dto.DoiTuongTienAnDTO;
import qldc.pm.tienan.model.DoiTuongTienAn;
import qldc.pm.tienan.model.PhieuThongTinVeNguoiCoTienAn;
import qldc.pm.tienan.model.TienAn;

import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.Validator;

public class DoiTuongTienAnDTOLocalServiceUtil {
	private static final SimpleDateFormat DEFAULT_DATE_FORMATE = new SimpleDateFormat("dd/MM/yyyy");

	public static List<DoiTuongTienAnDTO> findBySDDCN_CMND_SSHK_HVT_DCTT(
			String soDinhDanhCaNhan, String soCMND, String soSoHoKhau,
			String hoVaTen, long noiThuongTruTinhId,
			long noiThuongTruQuanHuyenId, long noiThuongTruPhuongXaId,
			String noiThuongTruDiaChi, Date tuNgayPhamToi,
			Date denNgayPhamToi, String banAnSo, Date tuNgayToaAn, Date denNgayToaAn,int trangThai, int start, int end, OrderByComparator obc) {
		List<DoiTuongTienAnDTO> doiTuongTienAnDTOs = new ArrayList<DoiTuongTienAnDTO>();

		List<Object[]> doiTuongTienAns = DoiTuongTienAnLocalServiceUtil.findBySDDCN_CMND_HVT_SSHK_DCTT(soDinhDanhCaNhan, soCMND, hoVaTen, soSoHoKhau, noiThuongTruTinhId, noiThuongTruQuanHuyenId, noiThuongTruPhuongXaId, noiThuongTruDiaChi, tuNgayPhamToi, denNgayPhamToi, banAnSo, tuNgayToaAn, denNgayToaAn, trangThai, start, end, obc);

		DoiTuongTienAnDTO doiTuongTienAnDTO;
		if(Validator.isNotNull(doiTuongTienAns) && !doiTuongTienAns.isEmpty()) {
			for (Object[] objects : doiTuongTienAns) {
				doiTuongTienAnDTO = new DoiTuongTienAnDTO();

				doiTuongTienAnDTO.setDoiTuongTienAnId((Long) objects[0]);
				doiTuongTienAnDTO.setSoDinhDanhCaNhan((String) objects[1]);
				doiTuongTienAnDTO.setXoaAnTich((Boolean) objects[2]);
				doiTuongTienAnDTO.setHoVaTen((String) objects[3]);
				doiTuongTienAnDTO.setSoCMND(Validator.isNotNull(objects[4]) ? (String) objects[4] : "");
				doiTuongTienAnDTO.setNoiThuongTruTinhId(Validator.isNotNull(objects[5]) ? (Long) objects[5] : 0L);
				doiTuongTienAnDTO.setNoiThuongTruQuanHuyenId(Validator.isNotNull(objects[6]) ? (Long) objects[6] : 0L);
				doiTuongTienAnDTO.setNoiThuongTruPhuongXaId(Validator.isNotNull(objects[7]) ? (Long) objects[7] : 0L);
				doiTuongTienAnDTO.setNoiThuongTruDiaChi(Validator.isNotNull(objects[8]) ? (String) objects[8] : "");

				TienAn latestTienAn = TienAnLocalServiceUtil.findByDoiTuongTienAnId_Latest(doiTuongTienAnDTO.getDoiTuongTienAnId());
				if(Validator.isNotNull(latestTienAn)) {
					doiTuongTienAnDTO.setNgayPhamToi(Validator.isNotNull(latestTienAn.getNgayPhamToi()) ? DEFAULT_DATE_FORMATE.format(latestTienAn.getNgayPhamToi()) : "");
					doiTuongTienAnDTO.setBanAnSo(latestTienAn.getBanAnSo());
					doiTuongTienAnDTO.setNgayToaAn(Validator.isNotNull(latestTienAn.getNgayToaAn()) ? DEFAULT_DATE_FORMATE.format(latestTienAn.getNgayToaAn()) : "");
				}

				doiTuongTienAnDTOs.add(doiTuongTienAnDTO);
			}
		}

		return doiTuongTienAnDTOs;
	}

	public static int countBySDDCN_CMND_SSHK_HVT_DCTT(
			String soDinhDanhCaNhan, String soCMND, String soSoHoKhau,
			String hoVaTen, long noiThuongTruTinhId,
			long noiThuongTruQuanHuyenId, long noiThuongTruPhuongXaId,
			String noiThuongTruDiaChi, Date tuNgayPhamToi,
			Date denNgayPhamToi, String banAnSo, Date tuNgayToaAn, Date denNgayToaAn, int trangThai) {
		return DoiTuongTienAnLocalServiceUtil.countBySDDCN_CMND_HVT_SSHK_DCTT
				(soDinhDanhCaNhan, soCMND, hoVaTen, soSoHoKhau, noiThuongTruTinhId, noiThuongTruQuanHuyenId, noiThuongTruPhuongXaId, noiThuongTruDiaChi, tuNgayPhamToi, denNgayPhamToi, banAnSo, tuNgayToaAn, denNgayToaAn, trangThai);

	}

	public static DoiTuongTienAnDTO fromDoiTuongTienAn(DoiTuongTienAn doiTuongTienAn) {
		String soDinhDanhCaNhan = doiTuongTienAn.getSoDinhDanhCaNhan();

		CongDanDTO congDanDTO = CongDanDTOLocalServiceUtil.findBySoDinhDanhCaNhan(soDinhDanhCaNhan);

		DoiTuongTienAnDTO doiTuongTienAnDTO = new DoiTuongTienAnDTO();
		doiTuongTienAnDTO.setDoiTuongTienAnId(doiTuongTienAn.getDoiTuongTienAnId());

		if(Validator.isNotNull(congDanDTO)) {
			doiTuongTienAnDTO.setHoVaTen(congDanDTO.getHoVaTen() != null ? congDanDTO.getHoVaTen() : "");
			doiTuongTienAnDTO.setGioiTinh(congDanDTO.getGioiTinh());
			doiTuongTienAnDTO.setSoDinhDanhCaNhan(soDinhDanhCaNhan != null ? soDinhDanhCaNhan : "");
			doiTuongTienAnDTO.setSoCMND(congDanDTO.getSoCMND() != null ? congDanDTO.getSoCMND() : "");
			doiTuongTienAnDTO.setSoSoHoKhau(congDanDTO.getSoSoHoKhau() != null ? congDanDTO.getSoSoHoKhau() : "");
			doiTuongTienAnDTO.setNgaySinh(congDanDTO.getNgaySinh() != null ? congDanDTO.getNgaySinh() : "");
			doiTuongTienAnDTO.setNoiThuongTruTinhId(congDanDTO.getNoiThuongTruTinhId());
			doiTuongTienAnDTO.setNoiThuongTruQuanHuyenId(congDanDTO.getNoiThuongTruQuanHuyenId());
			doiTuongTienAnDTO.setNoiThuongTruPhuongXaId(congDanDTO.getNoiThuongTruPhuongXaId());
			doiTuongTienAnDTO.setNoiThuongTruDiaChi(congDanDTO.getNoiThuongTruDiaChi() != null ? congDanDTO.getNoiThuongTruDiaChi() : "");
			doiTuongTienAnDTO.setDanTocId(congDanDTO.getDanTocId());
			doiTuongTienAnDTO.setTonGiaoId(congDanDTO.getTonGiaoId());
			doiTuongTienAnDTO.setQuocTich(congDanDTO.getQuocTich() != null ? congDanDTO.getQuocTich() : "");
			doiTuongTienAnDTO.setHoVaTenCha(congDanDTO.getHoVaTenCha() != null ? congDanDTO.getHoVaTenCha() : "");
			doiTuongTienAnDTO.setHoVaTenMe(congDanDTO.getHoVaTenMe() != null ? congDanDTO.getHoVaTenMe() : "");
			//doiTuongTienAnDTO.setHoVaTenMe(doiTuongTienAn.get.get);

		}

		TienAn tienAn = TienAnLocalServiceUtil.findByDoiTuongTienAnId_Latest(doiTuongTienAn.getDoiTuongTienAnId());
		if(Validator.isNotNull(tienAn)) {
			doiTuongTienAnDTO.setToaAnXuPhat(tienAn.getToaAnXuPhat() != null ? tienAn.getToaAnXuPhat() : "");
			doiTuongTienAnDTO.setNgayToaAn(tienAn.getNgayToaAn() != null ? parseDateToString(tienAn.getNgayToaAn()) : "");
			doiTuongTienAnDTO.setBanAnSo(tienAn.getBanAnSo() != null ? tienAn.getBanAnSo() : "");
			doiTuongTienAnDTO.setNgayPhamToi(tienAn.getNgayPhamToi() != null ? parseDateToString(tienAn.getNgayPhamToi()) : "");
			doiTuongTienAnDTO.setTienAnNeuCo(tienAn.getMoTaTienAn() != null ? tienAn.getMoTaTienAn() : "");
			doiTuongTienAnDTO.setToiDanh(tienAn.getToiDanh() != null ? tienAn.getToiDanh() : "");
			doiTuongTienAnDTO.setNoiDungXuPhat(tienAn.getHinhPhatChinh() != null ? tienAn.getHinhPhatChinh() : "");
			PhieuThongTinVeNguoiCoTienAn phieu = PhieuThongTinVeNguoiCoTienAnLocalServiceUtil.findByTienAnId(tienAn.getTienAnId());

			if(Validator.isNotNull(phieu)) {
				doiTuongTienAnDTO.setMaSoPhieuThongTinTienAn(phieu.getMaSoHoSoTienAnTuToaAn() != null ? phieu.getMaSoHoSoTienAnTuToaAn() :"");
				doiTuongTienAnDTO.setHoVaTenNguoiLapPhieu(phieu.getNguoiTrichLuc() != null ? phieu.getNguoiTrichLuc() :"");
				doiTuongTienAnDTO.setHoVaTenNguoiKyPhieu(phieu.getNguoiTrichLuc() != null ? phieu.getNguoiTrichLuc() :"");
				doiTuongTienAnDTO.setChuThich(phieu.getChuThich() != null ? phieu.getChuThich() :"");
 				doiTuongTienAnDTO.setNoiTamTruDiaChi(phieu.getNoiTamTruDiaChi() != null ? phieu.getNoiTamTruDiaChi() :"");
 				doiTuongTienAnDTO.setHoVaTenCha(phieu.getHoTenCha() != null ? phieu.getHoTenCha() :"");
 				doiTuongTienAnDTO.setHoVaTenMe(phieu.getHoTenMe() != null ? phieu.getHoTenMe() :"");
			}
		}
		return doiTuongTienAnDTO;
	}

	public static String parseDateToString(Date date) {
		String result = "";

		if(Validator.isNotNull(date)) {
			result = DEFAULT_DATE_FORMATE.format(date);
		}

		return result;
	}
}
